// 全局封装axios请求模块
import axios from 'axios'
import store from '../store/index.js'
import jsonBig from 'json-bigint'

// axios.defaults.baseURL = 'http://toutiao.itheima.net/'
// 若一个项目中存在多个基本url的配置时,怎么设置baseURL?
// axios.create() 通过axios实例创建基本请求对象\
// 通过export进行按需导出, 当使用时需要用import{} 来进行引用
export const request = axios.create({
  baseURL: 'http://toutiao.itheima.net/',
  // baseURL: 'http://geek.itheima.net/'

  // transformResponse 允许自定义原始的响应数据（字符串）
  transformResponse: [function (data) {
    try {
      // 如果转换成功则返回转换的数据结果
      return jsonBig.parse(data)
    } catch (err) {
      // 如果转换失败，则包装为统一数据格式并返回
      return {
        data
      }
    }
  }]
})

// 请求拦截器
request.interceptors.request.use(config => {
  // 判断是否登录=> store中的user是否携带token
  if (store.state.user.token) {
    config.headers.Authorization = `Bearer ${store.state.user.token}`
  }

  return config
}, (error) => {
  // 如果请求错了,抛出promise的异常
  return Promise.reject(error)
})
// export default axios
